import axios from "axios";
import { indexStore } from '@/stores/index';
import { message } from 'ant-design-vue';
const service = axios.create({
  //基础路径URL配置
  baseURL: "/api",
  //五秒未响应提示
  timeout: 5000,
  headers: {
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
  },
});
// 请求拦截器
service.interceptors.request.use(
  (config) => {
    const store = indexStore();
    store.addHttpCount();
    // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = localStorage.getItem("token");
    token && (config.headers.Authorization = token);
    return config;
  },
  (error) => {
    const store = indexStore();
    store.addHttpCount();
    return Promise.reject(error);
  }
);
//响应拦截器
service.interceptors.response.use(
  (response) => {
    const store = indexStore();
    store.cutHttpCount();
    //只返回config内的data的数据，其他的不展示
    if (response && response.data) {
      const res = response.data;
      return res;
    }
    return { code: 500, message: '响应数据格式错误', data: null };
  },
  (error) => {
    const store = indexStore();
    store.cutHttpCount();
    //如果请求出错会有弹框提示
    console.error('请求错误:', error);
    const errorMessage = error?.response?.data?.message || '请求失败，请检查网络连接';
    message.error(errorMessage);
    return Promise.reject(error);
  }
);
export default service;